1 //+------------------------------------------------------------------+
\r
2 //| Price Channel.mq4 |
\r
4 //| http://forex.kbpauk.ru/ |
\r
5 //+------------------------------------------------------------------+
\r
7 #property link "http://forex.kbpauk.ru/"
\r
8 //---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
\r
9 #property indicator_chart_window
\r
10 //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
\r
11 #property indicator_buffers 3
\r
12 //---- öâåò èíäèêàòîðà
\r
13 #property indicator_color1 Lime
\r
14 #property indicator_color2 Blue
\r
15 #property indicator_color3 Red
\r
16 //---- ñòèëü ëèíèé Bollinger Bands
\r
17 #property indicator_style1 4
\r
18 #property indicator_style2 2
\r
19 #property indicator_style3 4
\r
20 //---- input parameters
\r
21 extern int ChannelPeriod=14;
\r
26 //+------------------------------------------------------------------+
\r
27 //| Custom indicator initialization function |
\r
28 //+------------------------------------------------------------------+
\r
32 //---- indicator line
\r
33 SetIndexStyle(0,DRAW_LINE);
\r
34 SetIndexStyle(1,DRAW_LINE);
\r
35 SetIndexStyle(2,DRAW_LINE);
\r
37 SetIndexBuffer(0,UpBuffer);
\r
38 SetIndexBuffer(1,MdBuffer);
\r
39 SetIndexBuffer(2,DnBuffer);
\r
40 //---- name for DataWindow and indicator subwindow label
\r
41 short_name="Price Channel("+ChannelPeriod+")";
\r
42 IndicatorShortName(short_name);
\r
43 SetIndexLabel(0,"Up Channel");
\r
44 SetIndexLabel(1,"Middle Channel");
\r
45 SetIndexLabel(2,"Down Channel");
\r
47 SetIndexDrawBegin(0,ChannelPeriod);
\r
48 SetIndexDrawBegin(1,ChannelPeriod);
\r
49 SetIndexDrawBegin(2,ChannelPeriod);
\r
53 //+------------------------------------------------------------------+
\r
55 //+------------------------------------------------------------------+
\r
58 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó
\r
59 int ii,kk,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);
\r
60 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
61 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}
\r
62 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí (áåç ýòîãî ïåðåñ÷¸òà äëÿ counted_bars ôóíêöèÿ JurXSeries áóäåò ðàáîòàòü íåêîððåêòíî!!!)
\r
63 if (counted_bars>0) counted_bars--;
\r
65 double high,low,price;
\r
67 if(Bars<=ChannelPeriod) return(0);
\r
69 if(counted_bars<1)for(ii=1;ii<=ChannelPeriod;ii++) UpBuffer[Bars-ii]=0.0;
\r
70 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
71 ii=Bars-ChannelPeriod-1;
\r
72 if(counted_bars>=ChannelPeriod) ii=Bars-counted_bars-1;
\r
75 high=High[ii]; low=Low[ii]; kk=ii-1+ChannelPeriod;
\r
79 if(high<price) high=price;
\r
81 if(low>price) low=price;
\r
86 MdBuffer[ii]=(high+low)/2;
\r
91 //+---------------------------------------------------------------------------------------------------------------------------+
\r
92 //----+ Ââåäåíèå ôóíêöèè INDICATOR_COUNTED (ôàéë INDICATOR_COUNTED.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)
\r
93 #include <INDICATOR_COUNTED.mqh>
\r
94 //+---------------------------------------------------------------------------------------------------------------------------+